The thing here is that these are not type aliases, but rather associated types. This particular one is required in order to show rustc what the result of adding will be for your type.
In general, associated types specify some type associated and required by a trait. Kind of like type parameters (think Foo<T>), but named.
Edit: ninja, probably should just read ocean's post.
Well you are repeating yourself, the Output type is already the method's return type. But not all traits have this repetition and it's how you define the trait's associated types. It's a very handy feature.