Hello scripters! 
This isn’t an issue but more of a curiosity to know something…
So I have made a text button with a local script that would prompt the player with a developer product purchase that would give them 500 Crystals with the help of a server-sided script of course so my question is in the server-sided script which is this code:
local MarketplaceService = game:GetService("MarketplaceService")
local function processReceipt(receiptInfo)
local players = game:GetService("Players")
local player = players:GetPlayerByUserId(receiptInfo.PlayerId)
if not player then
return Enum.ProductPurchaseDecision.NotProcessedYet
end
player.leaderstats.Crystals.Value = player.leaderstats.Crystals.Value + 500
return Enum.ProductPurchaseDecision.PurchaseGranted
end
MarketplaceService.ProcessReceipt = processReceipt
It works fine with absolutely no problems at all BUT when I add an () to the processReceipt which is at the very end like this:
MarketplaceService.ProcessReceipt = processReceipt()
Basically for some reason the script would break and it would also give me this error shown in the image:

So my question is why does that happen when I do that? but it works fine when I remove the ()? what does the () do?