**== (loose equality)** compares values after type coercion — JavaScript converts operands to the same type before comparing.
**=== (strict equality)** compares both value AND type — no coercion occurs.
Examples: ```javascript 0 == false // true (false coerces to 0) 0 === false // false (different types) "" == false // true "" === false // false null == undefined // true null === undefined // false ```
**Rule of thumb:** always use === unless you have a specific reason for loose comparison.