This is a relatively well-known corner case. Different languages define the order of evaluation for assignments differently.
**C++:** implementation defined. **D:** implementation defined. **Python:** order of evaluation is left-to right, but for assignment it's right-to-left. **Java:** chose left-to-right everywhere. @Araq, what about Nim?