In most JavaScript environments, {} + [] evaluates to 0. This is a tricky case because the {} is interpreted as an empty code block (not an empty object) when it appears at the beginning of a statement. The expression is thus evaluated as +[], which converts the empty array to an empty string '', and then to the number 0. This behavior varies depending on context and environment. If you force the {} to be interpreted as an object by wrapping it in parentheses, ({} + []) would evaluate to '[object Object]', similar to [] + {}. This is one of the many quirks of JavaScript's type coercion system.