# Why is `(True, True, True) == True, True, True` not True in Python?

This has to do with how expressions are evaluated in python.

In the first case, both `a`

and `b`

are tuples.

```
a = True, True, True
b = (True, True, True)
print(type(a))
print(type(b))
print(a == b)
```

Out:

```
<class 'tuple'>
<class 'tuple'>
True
```

So, they are compared as tuples and in-fact they are both equal in value.

But for case 2, it's evaluated left to right.

```
(True, True, True) == True, True, True
```

First the tuple `(True, True, True)`

is compared with just `True`

which is `False`

.

Operator precedence. You're actually checking equality between `(True, True, True)`

and `True`

in your second code snippet, and then building a tuple with that result as the first item.

Recall that in Python by specifying a comma-separated "list" of items without any brackets, it returns a tuple:

```
>>> a = True, True, True
>>> print(type(a))
<class 'tuple'>
>>> print(a)
(True, True, True)
```

Code snippet 2 is no exception here. You're attempting to build a tuple using the same syntax, it just so happens that the first element is `(True, True, True) == True`

, the second element is `True`

, and the third element is `True`

.

So code snippet 2 is equivalent to:

`(((True, True, True) == True), True, True)`

And since `(True, True, True) == True`

is False (you're comparing a tuple of three objects to a boolean here), the first element becomes False.