Lecture 2: JavaScript Operators, Conditional Statements, Loops, Functions, Scopes



JavaScript Operators



- Binary Operators (Arithmetic)
+ 	- 	* 	/ 	%
- Assignment operators
= 	+= 	-= 	*= 	/= 	%=
- String operator (concatination)
+ 	+=
- Unary operators
++ 	-- 	- 	! 	typeof
- Comparison operators
==(equal value) 	===(equal value and type) 	!= 	!==(different value or type)                  > 	< 	<= 	>=
- Logical Operators
&& (and) 	|| (or) 	! (not)
- Conditional operator (Ternary Operator) ? :
3>2 ? "true" :"false"
- Bitwise operators & (AND):
x = 2 & 1; y = 3 & 1; //same as -> (10 & 01) = 00, 11 & 01 = 01
1 & 1 = 1, 1 & 0 = 0, 0 & 1 = 0, 0 & 0 = 0 | (OR):
x = 2 | 1; //same as -> (10 | 01) = 11
1 & 1 = 1, 1 & 0 = 1, 0 & 1 = 1, 0 & 0 = 0

~ (NOT):
x = ~2; // inverts the bits
^ (XOR) 1 ^ 1 = 0, 0 ^ 0 = 0, 0 ^ 1 = 1, 1 ^ 0 = 1

4<<2 //shift binary version of number 4 to left by 2 bits >> Right shift:
 4>>2 //shift binary version of number 4 to right by 2 bits


Conditional Statements

- if & else
var x = Number(prompt("Enter a number"));
if(!isNaN(x))
        alert("You are good to go");
else
        alert("Hey, that's not a number");


- if, else if, else
var num = Number(prompt("Pick a number", "0"));
if ( num < 10)
        alert (" Small ") ;
else if(num < 100)
        alert("Medium") ;
else
        alert("Large") ;


var firstName; 
if (firstName) {
  console.log('Your name is ' + firstName);
}


- switch case
switch(prompt("What is the weather like? (enter 1 for rainy, 2 for sunny)")) {
case "1":
        console.log("Take an umbrella with you"); 
        break;
case "2":
        console.log("Take a water bottle with you"); 
        break;
default:
        console.log("Unknown weather type!");
        break;
}


Loops



- Loops allow us to execute a block of statements repeatedly (till a given condition is true) - The while Loop
while(condition) {
        //code to be executed repeatedly
        ...
}
-The for Loop
for (initialize; condition; update) {
        // statements to repeat
        ......
}
- The do while Loop
do {
        //code to be executed repeatedly
        ...
}while(condition);


- Exercise Write a program which scans an input repeatedly. The program should not be repeated if the user gives a blank input. Do it using all three kinds of loops.

-Breaking out of a loop Exiting a loop even though the check condition is true
for(var i=1;i<=10;i++){
        var input=prompt("Enter your name");
        if(input==0)
        break;
}
- Continue a loop Continue a loop without executing remaining statements in the block.
for(var i=1;i<=10;i++){
        var input=prompt('Enter "Ram" or "Rawan"');
        if(input=="Ram")
        continue;
        alert("Rawan was ten headed");
}


Functions

- A block of code with or without name which can be executed when it is called (or invoked) - May or may not have a return statement. - May or may not have parameters. The scope of parameters is limited inside the function
function functionName([parameter1, parameter2....]) {
    code block.......
        [return();]}
- Functions can be executed right when it is declared function([parameter1, parameter2....]) { code block.......})([arg1,arg2...]);

(function() { alert('foo'); })();

- anonymous functions can be assigned to variables
var VariableName = function([parameter1, parameter2....]) {
        code block.......
            [return();]
    };
- Invoke a function
functionName([arg1,arg2....]);
    or
    VariableName([arg1,arg2....])
    or invoke it with some event
    onclick="functionName([arg1,arg2....]);"


- Functions can be passed as arguments
var subs = function (a,b){
        return(a-b);
    }
    function multi(a,b){
        return(a*b);
    }
    execute(subs,10,3);
    execute(multi,5,9);
    function execute(func,a,b){
        console.log(func(a,b));
    }


- Recursive function
 function factorial(n){
    if(n==1) return 1;
    else
    return(n * factorial(n-1));}


Scopes

- Variables declared with "var" keyword inside a function and parameters are in local scope - Variables used inside a function without being declared using "var" keyword are in global scope - Only functions create new scope in javascript. Loops or other block of codes don't
var x="global";
    (function(){var x = "local";})();
    console.log(x) ;

var f2 = function(){ x="I have changed the global variable"; }; f2(); console.log(x);


- Exercise Make a simple calculator that performs addition, substraction, multiplication, division. Also set a power function for "^" sign. Eg. 2^4= 2x2x2x2 = 16. Use recursive function for the power function.