x && y:
if x evaluates to false, no need to test further, return x (as it's false)
else if x evaluates to true, the result totally depends on y, so just return y (no need to test if y evaluates to true or false, just return it)
in your case, both "a" and "b" are evaluated to true, so we are in the second hypothesis. it just returns "b"!