The other answers explained the comma pretty well I guess, and Nikola's answer also shows you how the logical and operator &&
is used as an alternative of an if
statement, due to its short-circuiting evaluation.
As for the brackets - they just alter operator precedence, because the comma operator has a very low precedence naturally.
a && b, c
would be interpreted as (a && b), c
, i.e. if(a)b;c
a && (b, c)
is if(a){b;c}