A && B — if A is false, B is not evaluated (result is already false)A || B — if A is true, B is not evaluated (result is already true)// Safe check before access
if ($user && $user->isAdmin()) { ... }
// Default value — if first is falsy, return second
$name = $input['name'] ?? 'Guest';
// Conditional execution
$debug && error_log($message);
// Guard clause — stop the chain
$result = getData() || throw new NotFoundException();
If the second operand has a side effect (DB query, log write) — it will not execute on short-circuit. Keep this in mind when designing conditions.