This code works:
let foo;
(foo) = 'bar';
console.log(foo);
And that makes me believe that any expression works as a left-hand side in assignment, however, this code doesn't work:
let foo1 = "bar";
let foo2;
let foo3;
(foo1 && foo2 && foo3) = "foobar"; // The left-hand side evaluates to undefined which can't be assigned
console.log(foo1, foo2, foo3);
What makes a left-hand side valid in an assignment, why it can't always be an expression?