update query field order guaranteed
MySQL, when executing an update against a single table, does -- wrongly -- treat updates as "ordered," and update the columns in the order they're written in the query. 


  The second assignment in the following statement sets col2 to the current (updated) col1 value, not the original col1 value. The result is that col1 and col2 have the same value. This behavior differs from standard SQL.
  
  UPDATE t1 SET col1 = col1 + 1, col2 = col1;
  
  Single-table UPDATE assignments are generally evaluated from left to right. For multiple-table updates, there is no guarantee that assignments are carried out in any particular order.
  
  https://dev.mysql.com/doc/refman/5.6/en/update.html


Your query appears to be written in such a way that this behavior won't cause problems. As long as you don't reference the value of a column you've "already" changed (assuming left to right operation instead of atomic operation) it will do what you expect.