# Logical AND assignment (&&=)

The logical AND assignment (`x &&= y`) operator only assigns if `x` is truthy.

## Syntax

``````expr1 &&= expr2
``````

## Description

### Short-circuit evaluation

The logical AND operator is evaluated left to right, it is tested for possible short-circuit evaluation using the following rule:

`(some falsy expression) && expr` is short-circuit evaluated to the falsy expression;

Short circuit means that the `expr` part above is not evaluated, hence any side effects of doing so do not take effect (e.g., if `expr` is a function call, the calling never takes place).

Logical AND assignment short-circuits as well meaning that `x &&= y` is equivalent to:

``x && (x = y);``

And not equivalent to the following which would always perform an assignment:

``````x = x && y;
``````

## Examples

### Using logical AND assignment

``````let x = 0;
let y = 1;

x &&= 0; // 0
x &&= 1; // 0
y &&= 1; // 1
y &&= 0; // 0
``````

## Browser compatibility

BCD tables only load in the browser