Expressions and Operators
Expressions
An expression is any valid set of literals, variables, operators and expresions that evaluates to a single value. This value can be a number, a string or a logical value.
Operators
JavaScript has assignment, comparision, arithmetic, bitwise, logical, string and special operators. There are binary and unary operations. Binary operations require two operands and one operator, and the order is:
operand1 operator operand2
Unary operations require a single operand, before or after the operator
operator operand
or
operand operator
JavaScript has also one ternary operation: the conditional operation, and it requires three operands.
Assignment Operators
An assignment operator assigns its left operand with the value of the right operand. The assignement operator is equal (‘=’). The shorthand operators exist for standard operations, assigning a new value to a variable based in its old value. Here’s a table representing the shorthand formats available in JavaScript.
Shorthand Operator  Meaning  Description 
x += y  x = x + y  Adds x with y and sets x with the result 
x = y  x = x – y  Subtracts y to x and sets x with the result 
x *= y  x = x * y  Multiplies x by y and sets x with the result 
x /= y  x = x / y  Divides x by y and sets x with the result 
x %= y  x = x % y  Sets x with the integer reminder of dividing x by y 
x <<= y  x = x << y  Shifts x in binary representation y bits to left, shifting in zeros from right, and sets x with the result

x >>= y  x = x >> y  Shifts x in binary representation y bits to the right, discarding bits shifted off, and sets x with the result 
x >>>= y  x = x >>> y  Shifts x in binary representation y bits to the right, discarding bits shifted off, shifting in zeros from the left, and sets x with the result 
x &= y  x = x & y  Bitwise AND between x and y and sets x with the result 
x ^= y  x = x ^ y  Bitwise XOR between x and y and sets x with the result 
x = y  x = x  y  Bitwise OR between x and y and sets x with the result 
Arithmetic operator
Arithmetic operators include the familiar addition (+), subtraction (), multiplication (*) and division (/) operations. In addition there is the modulus operator (%) which gives the remainder left over from a division operation. Let us look at some examples:
For the example consider a=12 and b=7
Operator  Description  Examples 
+, , *, /  Standard arithmetic operators  ba returns 5 
%  Modulus. Returns the integer reminder of dividing a by b  a % b returns 5 25 % a returns 1 
++  Increments its unique operand by one. If it is used as prefix, the operand value and the return value are incremented. If it is used as a postfix, returns the value of its operand before adding one  a++ and ++a set a to 13, but in the first case it returns 12 and in the second case it returns 13 
—  Decrements its unique operand by one. If it is used as prefix, the operand value and the return value are decremented. If it is used as a postfix, returns the value of its operand before subtracing one  b– and b++ set b to 6, but in the first case it returns 5 and in the second case it returns 6 
–  Negation. Returns the negation of its operand  a returns 12 
Comparision Operator
This operator compares two operands and return a logical value based on the comparision result. The operands can be numerical or strings: when using strings, the comparision is based on the lexicographical ordering. There are only two values possible: true or false. The following table describes these operators:
For the examples consider x = 4 and y = 5
Operator  Description  Examples 
==  Equal. Returns true if both operands are equal  x == y returns false 
!=  Not equal. Returns true if both operands are not equal  x != y returns true 
>  Greater than. Returns true if the left operand is greater than the right operand  x > y returns false 
>=  Greater or equal than. Returns true if the left operand is greater or equal than the right operand  x >= y returns false 
<  Less than. Return true if left operand is les than right operand  x < y returns true 
<=  Less or equal than. Returns true if left operand is less or equal than right operand.  x <= y returns true 
Bitwise Operators
These operators work with the binary representation of each of its operands, but they always return standard JavaScript numerical values.
For the example consider a=30 (11110), b=87(1010111) and c=3
Operator  Description  Examples 
&  AND.Returns a one in each bit position, if bits of both operands are ones. Returns a zero for all the other cases  a & b returns 22 (10110) 
  OR.Returns a zero in each bit position, if bits of both operands are zeros. Returns a one for all the other cases  a  b returns 95 (1011111) 
^  XOR. Returns a one in each bit position if bits of both operands are different. Returns a zero for all the other cases  a ^ b returns 73 (1001001) 
<<  LEFT SHIFT. Shifts the first operand in binary representation by the number of bits refered by the second operand to the left, shifting in zeros from the right.  a << c returns 240 (11110000) 
>>  SIGNPROPAGATING RIGHT SHIFT. Shifts the first operand in binary representation by the number of bits refered by the second operand to the right, discarding bits shifted off.  b >> c returns 10 (1010) 
>>>  ZEROFILL RIGHT SHIFT. Shifts the first operand in binary representation by the number of bits refered by the second operand to the right, discarding the bits shifted off and shifting in zeros from the left.  b >>> c returns 10 (1010) 
String Operators
Comparison operators and the concatenation operator (+) can be used on string values. The concatenation operator returns a string which is the result of the union between the two operands (at least one of them must be a string.)
Operator Precedence
When evaluating an expression, there is a precedence order of the operators involved. There are only one pair of symbols which override any operator order: the parentheses.
Operator type  Operators 
assignment  = += = *= /= %= <<= >>= >>>= &= ^= = 
conditional  ?: 
logicalor   
logicaland  && 
bitwiseor   
bitwisexor  ^ 
bitwiseand  & 
equality  == != 
relational  < <= > >= 
bitwiseshift  << >> >>> 
addiction/subtraction  + – 
multiply/divide  * / % 
negation/increment  ! ~ – ++ __ typeof void 
call. member  () [] 
Some Special Operators
The conditional operator is the only operator in JavaScript that takes three operands. The syntax for this operator is:
(condition) ? val1: val2
If condition is true, the operator has the value of val1. Otherwise it has the value of val2. Here’s an example fot this operator:
status = (age>=18) ? “adult” : “minor”
The comma operator (,) simply evaluates both of its operands and returns the value of the second operand. This operator is primarily used inside a for loop, to allow multiple variables to be updated each time through the loop. Suppose you want to create a loop using the comma operator:
for (var i=0, j=5; i<=5; i++, j=2)
document.writeln(“(“+i+”,”+j+”)”)
and as output we’ll have:
(0,5)
(1,3)
(2,1)
(3,1)
(4,3)
(5,5)