(function() {
  var names = ["Sunday", "Monday", "Tuesday", "Wednesday",
               "Thursday", "Friday", "Saturday"];
  provide({
    getDayName: function(number) {
      return names[number];
    },
    getDayNumber: function(name) {
      for (var number = 0; number < names.length; number++) {
        if (names[number] == name)
          return number;
      }
    }
  });
})();
show(getDayNumber("Wednesday"));
Now i am reading an eloquentjavascript.net and i found such module pattern there. But i find it a little bit confusing, so can you explain to me why do we need to put this after our function - >() . It is to make it self invoking as far as i understand. but why do we need to make it self invoking?
And the second question why do we need to put our function in brackets  (function  ) () .Is ii just syntaxis ?
 
    