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.