Strange behaviour of Array.reduce() : Data:

    arr = [0, 0, 0, 1, 1]

Code:
###1
    !arr[0] + !arr[1] + !arr[2] + !arr[3] + !arr[4]
    // 3, correct!
but ...
###2
    arr.reduce((a, b) => (!a + !b));
    // 1, bullshit?!

Question:
Why is **1**. and **2**. not the same? Makes no sense to me? How can I reduce() my array to give me the same as in **1**.

