Повторы слов 2/5

Спасибо за приведенное решение.

Объясните, пожалуйста, как работает условие:

if (!obj[array[i]]) {
        obj[array[i]] = 1;
      } else {
        obj[array[i]]++;
      }

В цикле мы перебираем массив из слов, а как работает само условие «if»?

Не могу понять, как работает вот этот момент:

if (!obj[array[i]])

— сюда подставляются слова из массива и какие-то отрицаются, но что именно как и почему отрицается я не могу понять, объясните, пожалуйста.