This is perfectly OK, format items can appear in any order in the string.
For example, when format strings are stored as localized resources, the format items might be in a culture-specific order. For example, to display a full name, you could use:
String.Format(Resources.FullNameFormatString, firstName, middleName, lastName)
And the display order might depend on the culture, e.g.:
en-US: "{0} {1} {2}" // First Middle Last
fr-FR: "{2}, {0} {1}" // Last, First Middle
You might even have a localized version that doesn't use one of the format items (e.g. middle name):
"{2), {0}" // Last, First (middle name not used)
Of course, in your example it probably makes more sense to reorder the items, as others have said.