If you need the form field to be placed before any other form field present in the form, you need to use, for the weight, a lower value than the one used from the present form fields. The default value is 0; use a negative value to be sure the form field is always shown first (e.g. −200).


[search_form()][1] doesn't use any value for the field's weight, which means the default value is used.

      $form['basic'] = array(
        '#type' => 'container',
        '#attributes' => array('class' => array('container-inline')),
      );
      $form['basic']['keys'] = array(
        '#type' => 'textfield', 
        '#title' => $prompt, 
        '#default_value' => $keys, 
        '#size' => $prompt ? 40 : 20, 
        '#maxlength' => 255,
      );
      // processed_keys is used to coordinate keyword passing between other forms
      // that hook into the basic search form.
      $form['basic']['processed_keys'] = array(
        '#type' => 'value',
        '#value' => '',
      );
      $form['basic']['submit'] = array(
        '#type' => 'submit',
        '#value' => t('Search'),
      );





  [1]: http://api.drupal.org/api/drupal/modules!search!search.module/function/search_form/7