We need operators when performing any operation in a programming language. JavaScript also has arithmetic, assignment, comparison, logical, bitwise, and unary operators, among others. Let's take a look at these:
var num = 0; // {1}  
num = num + 2; 
num = num * 3;  
num = num / 2;  
num++; 
num--; 
 
num += 1; // {2} 
num -= 2; 
num *= 3; 
num /= 2; 
num %= 3; 
 
console.log('num == 1 : ' + (num == 1)); // {3}  
console.log('num === 1 : ' + (num === 1));  
console.log('num != 1 : ' + (num != 1));  
console.log('num > 1 : ' + (num > 1)); 
console.log('num < 1 : ' + (num < 1));  
console.log('num >= 1 : ' + (num >= 1));  
console.log('num <= 1 : ' + (num <= 1)); 
 
console.log('true && false : ' + (true && false)); // {4}  
console.log('true || false : ' + (true || false));  
console.log('!true : ' + (!true)); 
In line {1}, we have the arithmetic operators. In the following table, we have the operators and their descriptions:
| 
 Arithmetic operator 
 | 
 Description 
 | 
| 
 + 
 | 
 Addition 
 | 
| 
 - 
 | 
 Subtraction 
 | 
| 
 * 
 | 
 Multiplication 
 | 
| 
 / 
 | 
 Division 
 | 
| 
 % 
 | 
 Modulus (remainder of a division operation) 
 | 
| 
 ++ 
 | 
 Increment 
 | 
| 
 -- 
 | 
 Decrement 
 | 
 
In line {2}, we have the assignment operators. In the following table, we have the operators and their descriptions:
| 
 Assignment operator 
 | 
 Description 
 | 
| 
 = 
 | 
 Assignment 
 | 
| 
 += 
 | 
 Addition assignment (x += y) == (x = x + y) 
 | 
| 
 -= 
 | 
 Subtraction assignment (x -= y) == (x = x - y) 
 | 
| 
 *= 
 | 
 Multiplication assignment (x *= y) == (x = x * y) 
 | 
| 
 /= 
 | 
 Division assignment (x /= y) == (x = x / y) 
 | 
| 
 %= 
 | 
 Remainder assignment (x %= y) == (x = x % y) 
 | 
 
In line {3}, we have the comparison operators. In the following table, we have the operators and their descriptions:
| 
 Comparison operator 
 | 
 Description 
 | 
| 
 == 
 | 
 Equal to 
 | 
| 
 === 
 | 
 Equal to (both value and object type) 
 | 
| 
 != 
 | 
 Not equal to 
 | 
| 
 > 
 | 
 Greater than 
 | 
| 
 >= 
 | 
 Greater than or equal to 
 | 
| 
 < 
 | 
 Less than 
 | 
| 
 <= 
 | 
 Less than or equal to 
 | 
 
Finally, in line {4}, we have the logical operators. In the following table, we have the operators and their descriptions:
| 
 Logical operator 
 | 
 Description 
 | 
| 
 && 
 | 
 And 
 | 
| 
 || 
 | 
 Or 
 | 
| 
 ! 
 | 
 Not 
 | 
 
JavaScript also supports bitwise operators, which are shown as follows:
console.log('5 & 1:', (5 & 1)); 
console.log('5 | 1:', (5 | 1)); 
console.log('~ 5:', (~5)); 
console.log('5 ^ 1:', (5 ^ 1)); 
console.log('5 << 1:', (5 << 1)); 
console.log('5 >> 1:', (5 >> 1)); 
The following table contains a more detailed description of the bitwise operators:
| 
 Bitwise operator 
 | 
 Description 
 | 
| 
 & 
 | 
 And 
 | 
| 
 | 
 | 
 Or 
 | 
| 
 ~ 
 | 
 Not 
 | 
| 
 ^ 
 | 
 Xor 
 | 
| 
 << 
 | 
 Left shift 
 | 
| 
 >> 
 | 
 Right shift 
 | 
 
The typeof operator returns the type of the variable or expression. For example, have a look at the following code:
console.log('typeof num:', typeof num); 
console.log('typeof Packt:', typeof 'Packt'); 
console.log('typeof true:', typeof true); 
console.log('typeof [1,2,3]:', typeof [1,2,3]); 
console.log('typeof {name:John}:', typeof {name:'John'}); 
The output will be as follows:
    typeof num: number
    typeof Packt: string
    typeof true: boolean
    typeof [1,2,3]: object
    typeof {name:John}: object
 
According to the specification, there are two data types in JavaScript:
- Primitive data types: Null, undefined, string, number, boolean, and symbol
 
- Derived data types/objects: JavaScript objects, including functions, arrays, and regular expressions 
 
JavaScript also supports the delete operator, which deletes a property from an object:
var myObj = {name: 'John', age: 21}; 
delete myObj.age; 
console.log(myObj); //outputs Object {name: "John"} 
In this book's algorithms, we will be using some of these operators.