X + (4 * n) on one thread does not egual X + n + n + n + n on another thread.

In the left alternative, the term in brackets will be evaluated first. In binary floating point arithmetic 4 * n is (usually) an exact operation, because 4 is a power of two. So this operation is lossless, with respect to rounding error. Then the quadrupled number is added to X, and in the general case (when the exponents of X and of 4*n differ) there is a loss of information when the mantissa of the smaller magnitude number (i.e. the one with the smaller exponent) is aligned with the mantissa of the larger magnitude number.

In other words, the two floating points of the two values cannot float independently for an addition (i.e. for the value of the sum). The larger magnitude number's floating point "wins" (because that number's leading digits are more significant), and the smaller magnitude number effectively loses trailing digits, because those get shifted to the right, beyond the end of the mantissa width.

In the right alternative, most programming languages will evaluate from left to right. So the first addition is of X and n, potentially losing a few trailing digits of the smaller magnitude number. If X is the number of larger magnitude (i.e. the one with the larger exponent), then this loss of precision keeps happening for every further addition of n. So in this case we are effectively using a truncated, lower precision value of 4*n to add to X. (If n is the number of larger magnitude, then the loss of precision happens only once.)