Short-circuit evaluation controls flow using && and ||. With &&, the right side only evaluates if the left is truthy. With ||, the right side only evaluates if the left is falsy. This enables concise conditional execution: isValid && process(data) calls process only when valid. Note: avoid chaining condition && fn() || fallback β if fn() returns a falsy value, fallback is incorrectly returned. Use a ternary for that pattern instead.