In the below function call `.didSelectRating` what is the `self` argument(?) indicating? What exactly is this? 

I've seen this before a few times and don't know how to learn about this syntax because I don't know what to look up. I understand that the `rating` word in the second argument is the argument name but I don't understand how the first word before the comma encapsulates both the name and argument. 

What is this called and what is it doing? Is `self` the only word used here or can something else be here?

```
protocol RatingPickerDelegate {
    func preferredRatingSymbol(picker: RatingPicker) -> UIImage?
    func didSelectRating(picker: RatingPicker, rating: Int)
    func didCancel(picker: RatingPicker)
}

 func selectRating(selectedRating: Int) {
        delegate?.didSelectRating(self, rating: selectedRating)
        // Other logic related to selecting a rating
    }

```