Most language use short-circuited and/or operators. For example
return foo() && bar();
will never call bar() if foo() returns false. There is no need to call bar() if we know that the result of the expression will be false anyways.
Presumably, this behavior was originally implemented in order to make code run faster. However, technology has changed since then. In particular branches are more expensive relative to other operations then would have been the case when short-circuiting was introduced.
So I'm wondering: is it still a performance gain to short circuit operators?