The grouping operator does not destroy property references, which are provoking the method call.
This is explicitly mentioned in the spec:
NOTE: This algorithm does not apply GetValue to the result of
evaluatingExpression
. The principal motivation for this is so that
operators such asdelete
andtypeof
may be applied to parenthesised
expressions.
In your lines 4 and 5, it’s not the parenthesis but the operators (?:
and ||
) that de-reference the property and yield the “unbound” function.