1. Arithmetic Operators
let a = 10, b = 3;
// Basic arithmetic
console.log(a + b); // 13 - Addition
console.log(a - b); // 7 - Subtraction
console.log(a * b); // 30 - Multiplication
console.log(a / b); // 3.333... - Division
console.log(a % b); // 1 - Modulus (remainder)
2. Comparison Operators
let a = 5, b = "5", c = 10;
// Equality
console.log(a == b); // true - loose equality (compares value only)
console.log(a === b); // false - strict equality (compares value AND type)
// Inequality
console.log(a != b); // false - loose inequality
console.log(a !== b); // true - strict inequality
// Relational
console.log(a > c); // false - greater than
console.log(a < c); // true - less than
console.log(a >= 5); // true - greater than or equal
console.log(a <= 3); // false - less than or equal
// Special comparisons
console.log(null == undefined); // true
console.log(null === undefined); // false
console.log(NaN == NaN); // false (NaN is not equal to anything)
console.log(isNaN(NaN)); // true - use isNaN() to check
3. Logical Operators
let isLoggedIn = true;
let hasPermission = false;
let age = 25;
// AND (&&) - all conditions must be true
console.log(isLoggedIn && hasPermission); // false
console.log(isLoggedIn && age > 18); // true
// OR (||) - at least one condition must be true
console.log(isLoggedIn || hasPermission); // true
console.log(hasPermission || age < 18); // false
// NOT (!) - inverts the boolean value
console.log(!isLoggedIn); // false
console.log(!hasPermission); // true
// Short-circuit evaluation
let user = null;
let defaultName = "Guest";
// Returns first truthy value
let name = user || defaultName;
console.log(name); // "Guest"
4. Assignment Operators
let x = 10; // Basic assignment
// Compound assignment
x += 5; // x = x + 5 -> 15
console.log(x);
x -= 3; // x = x - 3 -> 12
console.log(x);
x *= 2; // x = x * 2 -> 24
console.log(x);
x /= 4; // x = x / 4 -> 6
console.log(x);
x %= 4; // x = x % 4 -> 2
console.log(x);
x **= 3; // x = x ** 3 -> 8 (exponentiation)
console.log(x);
// Bitwise assignment (less common)
let y = 5; // binary: 0101
y &= 3; // y = y & 3 -> 1 (binary: 0001)
console.log(y);
// Logical assignment (ES12)
let a = null;
a ||= 10; // a = a || 10 -> 10 (assigns if falsy)
console.log(a);
let b = 5;
b &&= 3; // b = b && 3 -> 3 (assigns if truthy)
console.log(b);
let c = null;
c ??= 20; // c = c ?? 20 -> 20 (assigns if null/undefined)
console.log(c);