Reason: Code A will return output in the form of a "real" boolean value because we first do what is written inside the parentheses, but then negate it again immediately. Therefore, it is saying something that is not true, makes it true.
Code B looks for the existence of the obj1 and obj2. Also, it may not necessarily return a "real" boolean value. This means instead of returning either true or false and it can be problematic because false-y can be either an empty string or can be 0.