JavaScript Operators
Increment / Decrement
let counter = 5;
console.log(counter++); // 5 (then counter becomes 6)
console.log(++counter); // 7 (counter becomes 7 then we display)
console.log(counter--); // 7 (then counter becomes 6)
console.log(--counter); // 5 (counter becomes 5 then we display)
Unary Operators
let text = "123";
console.log(+text); // 123 (conversion to number because it's a string and we apply an arithmetic operation)
console.log(-text); // -123 (conversion then negation)
console.log(!true); // false (logical NOT)
console.log(~5); // -6 (binary NOT)
// The binary NOT operator (~) takes the opposite of each bit of its operand and provides the value thus obtained.
// Like other binary operators, it converts its operand to a 32-bit signed integer.
// const a = 5; // 00000000000000000000000000000101
// const b = -3; // 11111111111111111111111111111101
// console.log(~a); // 11111111111111111111111111111010
// Expected output: -6
// console.log(~b); // 00000000000000000000000000000010
// Expected output: 2
Arithmetic Operators
console.log(10 + 5); // 15 (addition)
console.log(10 - 5); // 5 (subtraction)
console.log(10 * 5); // 50 (multiplication)
console.log(10 / 5); // 2 (division)
console.log(10 % 3); // 1 (remainder/modulo)
console.log(2 ** 3); // 8 (exponential: 2^3)
Comparison Operators
console.log(5 < 10); // true
console.log(5 > 10); // false
console.log(5 <= 5); // true
console.log(5 >= 10); // false
Equality Operators
console.log(5 == "5"); // true (equality with conversion)
console.log(5 === "5"); // false (strict equality, no conversion)
console.log(5 != "6"); // true (inequality with conversion)
console.log(5 !== "5"); // true (strict inequality)
Logical Operators
console.log(true && false); // false (logical AND)
console.log(true || false); // true (logical OR)
console.log(null ?? "default"); // "default" (nullish coalescing)
let name = null;
let display = name || "Anonymous"; // "Anonymous"
console.log(display);
Ternary Operator
let age = 18;
let status = age >= 18 ? "adult" : "minor";
console.log(status); // "adult"
// Nested ternary
let grade = 85;
let mention = grade >= 90 ? "excellent" : grade >= 70 ? "good" : "improve";
console.log(mention); // "good"
Optional Chaining
let client = {
name: "Jean",
address: {
city: "Paris"
}
};
console.log(client?.name); // "Jean"
console.log(client?.address?.city); // "Paris"
console.log(client?.phone?.number); // undefined (no error!)
Assignment Operators
let x = 10;
x += 5; // equivalent to x = x + 5
console.log(x); // 15
x -= 3; // x = x - 3
console.log(x); // 12
x *= 2; // x = x * 2
console.log(x); // 24
x /= 4; // x = x / 4
console.log(x); // 6
x **= 2; // x = x ** 2
console.log(x); // 36
Assignment with Destructuring
let [first, second] = [10, 20];
console.log(first, second); // 10 20
let {name: clientName, age: clientAge} = {name: "Sophie", age: 25};
console.log(clientName, clientAge); // "Sophie" 25
Binary Operators
console.log(5 & 3); // 1 (binary AND: 101 & 011 = 001)
console.log(5 | 3); // 7 (binary OR: 101 | 011 = 111)
console.log(5 ^ 3); // 6 (exclusive OR: 101 ^ 011 = 110)
console.log(5 << 1); // 10 (left shift: 101 -> 1010)
console.log(5 >> 1); // 2 (right shift: 101 -> 10)