I have added spoiler tags around your code for those who have not worked on this problem yet.
The 0 in this case represents the initial value for the accumulator parameter, which is a.
The initial value is techinally optional.
MDN answer
A value to use as the first argument to the first call of the callback . If no initialValue is supplied, the first element in the array will be used as the initial accumulator value and skipped as currentValue .
Here is a screenshot of what the code looks like in a debugger with the accumulator set to 0 (take a look at the left side of the pic)