How to change the saving order of field_collection fields
The only way I could solve my problem was to handle the logic in the form_validate function.
Unfortunately, I couldn't update the field collection from there... this is why I added a validation function for my field collection:

/**
 * Implements hook_field_widget_form_alter().
 */
function MYMODULE_field_widget_form_alter(&amp;$element, &amp;$form_state, $context) {
  // Add custom validation hooks for Field Collections.
  if ($context['field']['field_name'] == 'field1') {
    array_unshift($element['#element_validate'], 
'MYMODULE_field1_validate');
  }
}


Then I could insert my logic there:

/**
 * Custom validate function for field_assignments.
 *
 *  @see MYMODULE_field_widget_form_alter()
 */
 function MYMODULE_field1_validate($element, &amp;$form_state, $form) {   
    if (...){ 
       form_set_value($form["field1"][LANGUAGE_NONE][0]['field_to_change'], array(LANGUAGE_NONE =&gt; array(0 =&gt; array('value' =&gt; 123.456))), $form_state);
    }
  }