The comma operator has the lowest precedence of all C/C++ operators. Therefore it’s always the last one to bind to an expression, meaning this:
a = b, c;
is equivalent to:
(a = b), c;
Another interesting fact is that the comma operator introduces a sequence point. This means that the expression:
a+b, c(), d
is guaranteed to have its three subexpressions (a+b, c() and d) evaluated in order. This is significant if they have side-effects. Normally compilers are allowed to evaluate subexpressions in whatever order they find fit; for example, in a function call:
someFunc(arg1, arg2, arg3)
arguments can be evaluated in an arbitrary order. Note that the commas in the function call are not operators; they are separators.