# Is JavaScript's double equals (==) always symmetric?

It's *supposed* to be symmetric. However, there is an asymmetric case in some versions of IE:

```
window == document; // true
document == window; // false
```

In Javascript, `==`

is always symmetric.

The spec says:

NOTE 2 The equality operators maintain the following invariants:

`A != B`

is equivalent to`!(A == B)`

.`A == B`

is equivalent to`B == A`

, except in the order of evaluation of`A and B`

.

The answer to your actual question (is the operator symmetric) is yes. The ECMA-262 spec explicitly states:

NOTE 2 The equality operators maintain the following invariants:

`A != B`

is equivalent to`!(A == B)`

.`A == B`

is equivalent to`B == A`

, except in the order of evaluation of`A`

and`B`

.