But there is no similarly easy mechanism to add, say, 5 to both foo and bar at the same time. Of course, it’s simple enough to just do:

foo +=5;// foo is now 15
bar +=5;// bar is now 15

But that’s two operations.

The trick is:

foo +=-bar +(bar +=5);// foo and bar are now 15

You will probably never need this, it’s just interesting to know it’s possible.

Thanks to Matheus Avellar for sending in this little mindbending trick, who also explains:

The -bar gets parsed and becomes the negative value of bar, so -10. Then, a += 5 runs and sets bar to 15 (10 + 5). Finally, it sums up both values (-10 + 15) and gives you the difference between old bar and new bar, which is 15.